As processing requirements increase, the demand for higher throughput, higher density, etc. also increases. As the demand for higher throughputs increases beyond the capability of the single microprocessor, multiple processors have been utilized and interconnected into distributed processing systems. In such systems, each of the processors perform separate tasks or portions thereof to spread the work load equally over the processors. Intercommunication between the processors is usually done using serial transmission techniques and sharing of a common communications bus.
Present microprocessors contain both hardware and software interlocks that provide the capability for a multiprocessor system configuration. Such configurations are provided either by satellite processing (i.e., using special coprocessors), or by using I/O processors that free the CPU from complex tasks that formally required considerable CPU time. These external intelligent requestors cooperate (and compete) for mastership not only of the common shared bus, but also of other shared resources of the system (e.g., memory and I/O space, a peripheral, etc.). In such cases, a management protocol is required in order to make the relationship more equitable than a common master/slave relationship in which the resource-request line is dominated by a single system component. In the most general case, external intelligent requestors may all be CPUs, and thus form a multiprocessor system in which each resource requestor has equal importance and capability. In this way, functions may be distributed fully among those CPUs sharing common system resources. A system design can thus partition the problem into the separate tasks that each of several processors can handle individually and in parallel, increasing the system performance and throughput. In such configurations, these complete and self-contained systems innercommunicate using parallel transmission techniques, usually via a system bus. Appropriate connection links among the processors are provided to free the system designer from having to define which is the master and which is the slave. Furthermore, the system bus allows each processor to work asynchronously and, therefore, both fast and slow microprocessors can be incorporated into the same system.
Some of the more important considerations in multiprocessor systems are (1) the ability of the processor to interact properly without mingling the data; (2) the processor should be able to share system resources; and (3) synchronization among the processors should be ensured. Usually mechanisms for ensuring these requisites are provided by software operating systems, but they do require proper hardware support. Present microprocessors have appropriate control pins and special instructions for semaphore signalling, which temporarily renders one CPU, the "system master" that controls a certain critical share of resources and excludes all other processors from utilizing the resources. Such hardware support allows the development of operating systems to provide the mechanisms for multiprocessing implementations.
One of the disadvantages with multiprocessing systems is that each of the processors in the system operates independent of the other processors to some extent; that is, each of the processors possesses internal software that operates completely independent of the software in the remaining multiprocessors. Each of these multiprocessors is task oriented. The software of the various multiprocessors is therefore not related or interleved, resulting in an inefficient instruction flow in that some of the processors in the systems will have idle time and not be performing a task. Therefore, there exists a need for a more efficient system that more easily distributes the processing load and the instruction flow over the processors in the system while minimizing the amount of idle time of each of the processors of the system. This would result in multiple processors cohesively acting together to perform a particular task or group of tasks.